package com.riant.cert.tool;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
 *Base64实际上是对二进制码做分组转换操作
 * 1. 每3个8位二进制码位一组，转换为4个6位二进制码为一组（不足6位时地位补0）。3个8位二进制码和4个6位二进制码长度都是24位。
 * 2. 对获得的4个6位二进制码补位，每个6位二进制码添加两位高位0，组成4个8位二进制码。
 * 3. 将获得的4个8位二进制码转换为4个十进制码。
 * 4. 将获得的十进制码转换为Base64字符表中对应的字符。
 *  Apache的实现：（建议使用这种方式，当然，自己实现也可以）
 * 参考org.apache.commons.codec.binary.Base64
 * */
public class BASE64 {
    /** * BASE64解密 * @param key * @return * @throws Exception */
    public static byte[] decryptBASE64(String key) throws Exception {
        return (new BASE64Decoder()).decodeBuffer(key);
    }

    /** * BASE64加密 * @param key * @return * @throws Exception */
    public static String encryptBASE64(byte[] key) throws Exception {
        return (new BASE64Encoder()).encodeBuffer(key);
    }

    public static void main(String[] args) throws Exception {
        String data = BASE64.encryptBASE64("http://aub.iteye.com/".getBytes());
        System.out.println("加密前：" + data);
        byte[] byteArray = BASE64.decryptBASE64(data);
        System.out.println("解密后：" + new String(byteArray));
    }
}
